#pragma once
#include "DXAMLCommon.h"


class CValue;

struct IXcpHostSite
{
protected: 
	~IXcpHostSite();
	virtual void IncrementReference() = 0;
	virtual void ReleaseReference() = 0;
	virtual void InvalidateView(struct XRECT_WH *) = 0;
	virtual void ReportError(struct IErrorService *) = 0;
	virtual HRESULT GetServicePtr(void * *) = 0;
	virtual HRESULT FindName(XUINT16 *, struct Xcp_IDependencyObject *, void * *) = 0;
	virtual struct IPALUri * GetBaseUri() = 0;
	virtual struct IPALUri * GetSecurityUri() = 0;
	virtual HRESULT SetAppUri(struct IPALUri *) = 0;
	virtual struct IXcpDispatcher * GetXcpDispatcher() = 0;
	virtual HRESULT NavigateToSafeURL(CXString *, CXString *) = 0;
	virtual HRESULT GetBrowserWindowHandle(void * *) = 0;
	virtual HRESULT Download(CXString *, XUINT32, XUINT16 *, struct IPALControlDownloadCallback *, XUINT32, XINT8 *) = 0;
	virtual HRESULT RequestRead(void *, XUINT32, XUINT32) = 0;
	virtual HRESULT CancelDownload(void *) = 0;
	virtual struct IXcpBrowserHost * GetBrowserHost() = 0;
	virtual XINT32 IsInitialized() = 0;
	virtual HRESULT GetEnableHtmlAccess(XINT32 *) = 0;
	virtual HRESULT GetAllowHtmlPopupWindow(XBOOL *) = 0;
	virtual XBOOL GetIsCrossDomainSource() = 0;
	virtual XBOOL GetIsRedirectedSource() = 0;
	virtual enum XDomainAccess GetAllowExternalCallersFromXDomain() = 0;
	virtual HRESULT GetActualHeight(XUINT32 *) = 0;
	virtual HRESULT GetActualWidth(XUINT32 *) = 0;
	virtual HRESULT AddScriptObjToList(struct IScriptObject *) = 0;
	virtual HRESULT RemoveScriptObjFromList(struct IScriptObject *) = 0;
	virtual HRESULT GetHostingElement(void * *) = 0;
	virtual XUINT32 GetIdentity() = 0;
	virtual HRESULT GetAccessibilityObject(struct Xcp_IDependencyObject * *) = 0;
	virtual void FireAccessibilityEvent(enum AccessibilityEvent) = 0;
	virtual HRESULT IsDependencyObjectValid(struct Xcp_IDependencyObject *) = 0;
	virtual void * AddTrackableObject(struct ITrackableObject *) = 0;
	virtual HRESULT RemoveTrackableObject(void *) = 0;
	virtual HRESULT ClearTrackableObjects() = 0;
	virtual HRESULT CreateBrowserService(struct IManagedRuntimeHost *, struct IBrowserService * *) = 0;
	virtual XUINT16 * GetSourceString() = 0;
	virtual XBOOL GetEnableOverdrawHeatMap() = 0;
	virtual void SetEnableOverdrawHeatMap(XBOOL) = 0;
	virtual XINT32 GetEnableFrameRateCounter() = 0;
	virtual void SetEnableFrameRateCounter(XINT32) = 0;
	virtual XINT32 GetEnableCacheVisualization() = 0;
	virtual void SetEnableCacheVisualization(XINT32) = 0;
	virtual HRESULT IsVersionSupported(CXString *, XINT32 *, CXString *) = 0;
	virtual HRESULT IsRuntimeVersionSupported(XINT32 *) = 0;
	virtual HRESULT IsInstalledVersionSupported(XINT32 *) = 0;
	virtual HRESULT CrackVersionString(CXString *, XUINT32 *, XUINT32 *, XUINT32 *, XUINT32 *) = 0;
	virtual void DoMinVerNotifications() = 0;
	virtual void ShowMinVerWindow() = 0;
	virtual HRESULT GetUserAgent(CXString * *) = 0;
	virtual void SetAllowExternalCallersFromXDomain(enum XDomainAccess) = 0;
	virtual XBOOL IsHostBrowser() = 0;
	virtual XBOOL IsHostCustomHost() = 0;
	virtual void * GetXcpControlWindow() = 0;
	virtual void * GetControlOrFullScreenWindow() = 0;
	virtual void SetMouseCapture(XBOOL) = 0;
	virtual HRESULT UIAClientsAreListening(enum UIAXcp::APAutomationEvents) = 0;
	virtual HRESULT UIARaiseAutomationEvent(struct Xcp_IAutomationPeer *, enum UIAXcp::APAutomationEvents) = 0;
	virtual HRESULT UIARaiseAutomationPropertyChangedEvent(struct Xcp_IAutomationPeer *, enum UIAXcp::APAutomationProperties, CValue *, CValue *) = 0;
	virtual HRESULT GetUIAWindow(void *, void * *) = 0;
	virtual HRESULT GetAccessibleRootObjectReference(void *, unsigned long, unsigned long, unsigned long *, XUINT32 *) = 0;
	virtual HRESULT IsAppVersionSupported(CXString *) = 0;
	virtual HRESULT OnSourceRedirected(struct IPALUri *) = 0;
	virtual XFLOAT GetZoomFactor() = 0;
	virtual HRESULT GetProductId(CXString * *) = 0;
	virtual HRESULT GetInstanceId(CXString * *) = 0;
	virtual HRESULT OnPluginWindowChanged() = 0;
	virtual HRESULT GetDefaultThemeResourceDictionaryString(XUINT32, XUINT16 *, CXString * *) = 0;
	virtual XBOOL IsJupiterNative() = 0;
	virtual XBOOL IsPrivacyModeCheckNeeded() = 0;
	virtual HRESULT OnFirstFrameDrawn() = 0;
	virtual HRESULT TrySetCursorToCoreWindowCursor(XUINT32 *) = 0;
	virtual XBOOL IsWindowDestroyed() = 0;
};